【发布时间】:2015-11-15 19:00:21
【问题描述】:
我想知道在创建子进程和通过管道建立通信时,头文件 unistd.h 和 stdlib.h 之间有什么区别...
我们在这些情况下使用的系统调用函数是read()、write()、wait()、pipe()、fork()、exit()。而且似乎 stdlib.h 库也有它们,为什么 stackoverflow 或其他站点中的所有示例都包含这两个标头?。
演示:
打开您的控制台并编写nano program.c,粘贴以下代码。
然后用gcc program.c -o program 编译它,你会得到 pid:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int pid;
pid = fork();
printf("EL pid %i\n", pid);
}
【问题讨论】:
-
首先要知道的是它们不是图书馆!你确定吗? AFAIK
read(),write()... 等,仅在 uinstd.h 中声明,exit()虽然在 stdlib.h 中声明。 -
是的,完全确定!,我有一个程序可以创建 10 个从父亲那里接收消息的子进程,我只包括
和 ,一切正常,管道、叉子、关闭功能我没有收到错误。我有 ubuntu,我用 KWRITE 编辑脚本。 -
你检查文件内容了吗?
-
我刚刚尝试用 nano 使用相同的库来运行相同的程序,并且工作正常。
-
和你使用的文本编辑器无关!我认为您需要了解事情的真正运作方式,并摆脱 Windows 操作系统教我们的方式。
标签: c linux operating-system