当前位置: 首页 > news >正文

网站制作的基本流程上海抖音seo公司

网站制作的基本流程,上海抖音seo公司,青岛网站建设¥青岛博采网络,wordpress 上传 中文乱码了解伪终端概念: 伪终端(PTY)由一对设备组成:主设备(master)和从设备(slave)。数据写入主设备会出现在从设备,反之亦然。这允许一个进程通过主设备与另一个进程&#xff…
  1. 了解伪终端概念
    • 伪终端(PTY)由一对设备组成:主设备(master)和从设备(slave)。数据写入主设备会出现在从设备,反之亦然。这允许一个进程通过主设备与另一个进程(如bash)通过从设备进行通信。
  2. 相关函数
    • openpty:用于创建伪终端对。其原型为int openpty(int *amaster, int *aslave, char *name, const struct termios *termp, const struct winsize *winp)amasteraslave是指向文件描述符的指针,分别用于主设备和从设备;name可用于获取从设备的路径名;termp可用于设置终端属性;winp可用于设置窗口大小。
    • fork:创建一个新进程,子进程通常用于执行bash,父进程用于与伪终端主设备交互。
    • dup2:在子进程中用于将标准输入、输出和错误重定向到伪终端从设备。
    • writeread:用于在父进程中向伪终端主设备写入命令,并读取bash的输出。
  3. 示例代码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <termios.h>
#include <string.h>#define BUFFER_SIZE 1024// 设置文件描述符为非阻塞模式
void set_nonblocking(int fd) {int flags = fcntl(fd, F_GETFL, 0);fcntl(fd, F_SETFL, flags | O_NONBLOCK);
}int main() {int master, slave;pid_t pid;char buffer[BUFFER_SIZE];struct termios oldtty, newtty;// 创建伪终端对if (openpty(&master, &slave, NULL, NULL, NULL) == -1) {perror("openpty");return 1;}// 保存当前终端设置tcgetattr(STDIN_FILENO, &oldtty);newtty = oldtty;// 设置终端为非规范模式newtty.c_lflag &= ~(ICANON | ECHO);// 设置终端属性tcsetattr(STDIN_FILENO, TCSANOW, &newtty);// 设置伪终端主设备为非阻塞模式set_nonblocking(master);// 创建子进程pid = fork();if (pid == -1) {perror("fork");close(master);close(slave);return 1;} else if (pid == 0) {// 子进程close(master);// 将标准输入、输出和错误重定向到伪终端从设备if (dup2(slave, STDIN_FILENO) == -1) {perror("dup2 stdin");return 1;}if (dup2(slave, STDOUT_FILENO) == -1) {perror("dup2 stdout");return 1;}if (dup2(slave, STDERR_FILENO) == -1) {perror("dup2 stderr");return 1;}close(slave);// 启动bashexecl("/bin/bash", "bash", (char *)NULL);perror("execl");return 1;} else {// 父进程close(slave);// 向bash发送命令const char *command = "ls\n";if (write(master, command, strlen(command))!= strlen(command)) {perror("write");}// 读取bash的输出ssize_t bytes_read;while ((bytes_read = read(master, buffer, sizeof(buffer) - 1)) > 0) {buffer[bytes_read] = '\0';printf("%s", buffer);}// 等待子进程结束waitpid(pid, NULL, 0);// 恢复终端设置tcsetattr(STDIN_FILENO, TCSANOW, &oldtty);close(master);}return 0;
}
  1. 代码解释
    • 创建伪终端对:使用openpty创建伪终端主设备master和从设备slave
    • 终端设置:保存当前终端设置oldtty,并修改为非规范模式newtty,这样可以实时读取输入而无需等待换行符。
    • 设置非阻塞模式:将伪终端主设备设置为非阻塞模式,以便在读取输出时不会阻塞。
    • 进程创建:通过fork创建子进程,子进程执行bash,父进程与伪终端主设备交互。
    • 子进程操作:关闭master,将标准输入、输出和错误重定向到slave,然后执行bash
    • 父进程操作:关闭slave,向master写入命令(如ls\n),循环读取并打印bash的输出,等待子进程结束,最后恢复终端设置。

这样,通过上述代码,你可以在C语言程序中使用伪终端与bash进行交互。

http://www.yayakq.cn/news/229209/

相关文章:

  • 同仁微网站建设工作室广州seo服务
  • 微信机器人与wordpress站长工具seo综合查询隐私查询
  • 网站重复WordPress怎么改目录顺序
  • 罗湖网站建设的公司全屋定制十大名牌是哪些
  • 网站建设大师网络科技有限公司辽中网站建设
  • 不是做有网站都叫狠狠网络商品推广策划书
  • 导购网站怎么做有特色郑州seo优化顾问热狗
  • 韩国建设部网站wordpress首页显示文章图片
  • 怎样网站建设与管理多语种网站建设
  • 建设网站的公司兴田德润怎么联系北京做电子系统网站的公司
  • 桂林网站制作公司wordpress用户搜索次数插件
  • seo工具网站企业做网站的公司
  • 石家庄网络建站宁波seo快速排名
  • 搏彩网站开发建设高端网站建设设计
  • 上海网站空间服务器焦作黄河交通学院
  • 投资20万做网站好吗手机网站模板psd
  • 西安网站建设管理网站域名多少钱一年
  • 石家庄 网站建站网页设计基础考试题目
  • 做ppt常用的网站深圳观澜网站建设
  • 做微网站迅宇科技宝丰县建设局网站
  • 国外网站建设接单个人网站设计论文道客巴巴
  • 物流门户网站开发游戏代理怎么找平台
  • 法律咨询免费平台哈尔滨关键词优化排名
  • 建设银行不良资产处置网站兰州市住房保障和城乡建设局网站
  • 东莞 外贸网站建设网站备案查询 美橙网
  • 网站建设代码走查qq空间注册申请
  • 做一个购物商城网站多少钱广州比较好的广告公司有哪些
  • 衡水网站建设知识wordpress密码重置
  • 如何推广一个网站常见的网站建设技术有哪些
  • 上海做网站开发的公司泰安招聘信息58同城