当前位置: 技术问答>linux和unix
[学习UNIX编程]初学UNIX编程,遇到一个小小的问题,烦劳大虾帮忙解惑,谢谢!
来源: 互联网 发布时间:2015-06-06
本文导语: 小弟初学UNIX编程,看了网友们的推荐,就下载了一本《UNIX环境高级编程》(中文版的)。在看完了第一章之后,于是就在单位里的SCO UNIX 上面照着书上写了一个程序,结果用cc编译不能通过。程序如下: ----------------------...
小弟初学UNIX编程,看了网友们的推荐,就下载了一本《UNIX环境高级编程》(中文版的)。在看完了第一章之后,于是就在单位里的SCO UNIX 上面照着书上写了一个程序,结果用cc编译不能通过。程序如下:
---------------------------------------------------------
#include "ourhdr.h"
int
main(void)
{
printf("hello world from process ID %dn", getpid());
exit(0);
}
---------------------------------------------------------
提示如下:
# cc processid.c
"processid.c", line 1: error: cannot find include file: "ourhdr.h"
后来,把头文件换成“unistd.h”,重新编译就可以通过了。请问这是为什么呢?
在运行这个程序的时候,我又发现与书上所写的有不同之处。运行情况如下:
# ./a.out
hello world from process ID 12330
# ./a.out
hello world from process ID 12331
可以看到,前后运行两次所返回的进程ID是连续的。而书上给出的情况是不连续的。并且在第一章后面的习题(第2题)中问例程中的进程ID为什么不连续。这和我的程序运行结果不同。请指教!
---------------------------------------------------------
#include "ourhdr.h"
int
main(void)
{
printf("hello world from process ID %dn", getpid());
exit(0);
}
---------------------------------------------------------
提示如下:
# cc processid.c
"processid.c", line 1: error: cannot find include file: "ourhdr.h"
后来,把头文件换成“unistd.h”,重新编译就可以通过了。请问这是为什么呢?
在运行这个程序的时候,我又发现与书上所写的有不同之处。运行情况如下:
# ./a.out
hello world from process ID 12330
# ./a.out
hello world from process ID 12331
可以看到,前后运行两次所返回的进程ID是连续的。而书上给出的情况是不连续的。并且在第一章后面的习题(第2题)中问例程中的进程ID为什么不连续。这和我的程序运行结果不同。请指教!
|
ourhdr.h是要自己定义的一个.h文件吧,书后面有ourhdr.h的原代码,作者把这本书所用到的库全写在ourhdr.h里面了,根据自己的需要,写一个就可以了。
|
因为getpid系统调用包含在unistd.h头文件中,所以你要包含这个头文件。
你连续运行两次你的进程号当然是连续的了,如果你在两次中间运行几个其他程序当你在运
行的时候进程号肯定就不连续了。
你连续运行两次你的进程号当然是连续的了,如果你在两次中间运行几个其他程序当你在运
行的时候进程号肯定就不连续了。
|
建议看看书后面的附录先。