当前位置: 技术问答>linux和unix
linux下的程序编译问题,看不懂的编译错误,谁能帮我看看怎么修改,谢谢拉(很急!!)
来源: 互联网 发布时间:2016-06-01
本文导语: 原程序:(我用的是linux5企业版) #include #include #include #include int wait_flag; void stop(); main(){ int pid1,pid2; signal(3.stop); while((pid1=fork())==-1); if(pid2>0){ wait_flag=1; sleep(1); kill(pid1.16); kill(pid2,17); wait(0); wait(0); printf("n parent pr...
原程序:(我用的是linux5企业版)
#include
#include
#include
#include
int wait_flag;
void stop();
main(){
int pid1,pid2;
signal(3.stop);
while((pid1=fork())==-1);
if(pid2>0){
wait_flag=1;
sleep(1);
kill(pid1.16);
kill(pid2,17);
wait(0);
wait(0);
printf("n parent process is killed !!n");
exit(0);
}
else{
wait_flag=1;
signal(17,stop);
printf("n child process 2 is killed by parent !!n");
exit(0);
}
}
else{
wait_flag=1;
signal(16,stop);
printf("n child process 1 is killed by parent !!n");
exit(0);
}
}
void stop(){
wait_flag=0;
}
[lilin@localhost 操作系统实验]$ gcc 3.c -o 3
3.c:9:8: 错误:浮点常量的“stop”后缀无效
3.c: 在函数 ‘main’ 中:
3.c:9: 错误:提供给函数 ‘signal’ 的实参太少
3.c:14: 错误:expected ‘)’ before numeric constant
3.c:14: 错误:提供给函数 ‘kill’ 的实参太少
3.c:18:8: 警告:未知的转义序列:‘40’
3.c:19: 警告:隐式声明与内建函数 ‘exit’ 不兼容
3.c:24:8: 警告:未知的转义序列:‘40’
3.c:25: 警告:隐式声明与内建函数 ‘exit’ 不兼容
3.c: 在顶层:
3.c:28: 错误:expected identifier or ‘(’ before ‘else’
3.c:31:8: 警告:未知的转义序列:‘40’
3.c:34: 错误:expected identifier or ‘(’ before ‘}’ token
#include
#include
#include
#include
int wait_flag;
void stop();
main(){
int pid1,pid2;
signal(3.stop);
while((pid1=fork())==-1);
if(pid2>0){
wait_flag=1;
sleep(1);
kill(pid1.16);
kill(pid2,17);
wait(0);
wait(0);
printf("n parent process is killed !!n");
exit(0);
}
else{
wait_flag=1;
signal(17,stop);
printf("n child process 2 is killed by parent !!n");
exit(0);
}
}
else{
wait_flag=1;
signal(16,stop);
printf("n child process 1 is killed by parent !!n");
exit(0);
}
}
void stop(){
wait_flag=0;
}
[lilin@localhost 操作系统实验]$ gcc 3.c -o 3
3.c:9:8: 错误:浮点常量的“stop”后缀无效
3.c: 在函数 ‘main’ 中:
3.c:9: 错误:提供给函数 ‘signal’ 的实参太少
3.c:14: 错误:expected ‘)’ before numeric constant
3.c:14: 错误:提供给函数 ‘kill’ 的实参太少
3.c:18:8: 警告:未知的转义序列:‘40’
3.c:19: 警告:隐式声明与内建函数 ‘exit’ 不兼容
3.c:24:8: 警告:未知的转义序列:‘40’
3.c:25: 警告:隐式声明与内建函数 ‘exit’ 不兼容
3.c: 在顶层:
3.c:28: 错误:expected identifier or ‘(’ before ‘else’
3.c:31:8: 警告:未知的转义序列:‘40’
3.c:34: 错误:expected identifier or ‘(’ before ‘}’ token
|
没看程序正确性,只是修改了一些明显的错误.
signal(3.stop);
改成 signal(3,stop)
kill(pid1.16); 把.改成,
printf("n parent process is killed !!n");
改成
printf("n parent process is killed !!n");
其他几个类似
signal(3.stop);
改成 signal(3,stop)
kill(pid1.16); 把.改成,
printf("n parent process is killed !!n");
改成
printf("n parent process is killed !!n");
其他几个类似
|
.......唉,不懂...
|
你的程序貌似在windows平台下写的,然后拿到linux上编译?
如果是这样的话,就涉及到windows和linux编码的差异。linux为utf8编码的
而windows的在linux下用vi打开,你就会发现在每行后面多了一些怪异的字符
你把这些字符删除了就ok了
如果是这样的话,就涉及到windows和linux编码的差异。linux为utf8编码的
而windows的在linux下用vi打开,你就会发现在每行后面多了一些怪异的字符
你把这些字符删除了就ok了
|
同意1楼的
另外你把程序整理好,再编译看看。
现在里面的格式一团糟啊..
另外你把程序整理好,再编译看看。
现在里面的格式一团糟啊..
|
main函数中最后一个else没有if相配,第一个else块后部多了一个"}"。
你在抄某书上的一些教学例子吧?注意,别把“逗号”抄成“点”。
你在抄某书上的一些教学例子吧?注意,别把“逗号”抄成“点”。
|
你的代码很不清楚,能不能整理一下呢?
|
楼主,你代码本身就有问题,按照你现在的代码,第二个else不知道与谁匹配,代码就不对,中间好像少了一个}