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

给公司网站设计建设互联网站

给公司网站设计,建设互联网站,电商设计工资多少钱一个月,网页微信可以传文件吗了解伪终端概念: 伪终端(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/331510/

相关文章:

  • 中国建设银行天津分行网站wordpress建手机站教程
  • 手机系统网站木蚂蚁网站正在建设中
  • 口碑好的品牌网站建设网页设计师的工作时间
  • 电商设计师联盟网站个人备案网站服务内容
  • 设立网站 费用WordPress文章设置密码
  • 建三江廉政建设网站青岛建设网站设计公司
  • 中小型网站建设渠道建大网络
  • 网站与服务器的关系网站开发用不用写交互
  • 临汾网站建设销售全国十大装饰公司最有名的是
  • 网站seo收录wordpress 最新文章
  • 建设通和天眼查网站建设银行云南分行招聘网站
  • 怎么用公司网站做公司域名多个海阳seo排名优化培训
  • 建设招标网网站wordpress主题 可爱
  • 做暖dnf动态ufo网站台州做网站需要多少钱
  • 淘宝属于什么类型的网站山东建设厅网站网址
  • 怎么在自己的网站上做链接怎么做打鱼网站
  • 购物网站用html怎么做万网网站模板下载
  • 做电影网站用什么服务器泉州专业做网站
  • 哪家网站开发培训好深圳做小程序网站开发
  • 中国优秀企业网站欣赏无极网
  • 自己建设网站要多久网站服务器租用还是自买
  • 企业网站建设的建站前准备wordpress 帝国 seo
  • 网站建设域名注册网站建设应考虑哪些方面的问题
  • 网页和网站的概念wordpress怎么安装拖拽编辑软件
  • 中小企业建站系统沈阳软件开发公司
  • 洛阳市做网站的邯郸吧
  • 网站开发项目规划书知名的咨询行业网站制作
  • 深圳网站建设制作哪家口碑好html好看的网站
  • 中科院网站建设建筑八大员培训机构
  • 站长工具seo综合查询怎么用如何在税局网站上做税种认定