外部:找不到命令
extern: command not found
我正在关注 this lab Udemy 计算机安全课程,该课程主要使用 C(我认为)脚本进行演示。在我自己的计算机上(在 Ubuntu 和 MacOS 环境中)尝试 运行 以下程序后,我得到了很多错误,似乎编译器甚至不知道它正在读取什么语言.
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
extern char **environ;
void printenv()
{
int i = 0;
while (environ[i] != NULL) {
printf("%s\n", environ[i]);
i++;
}
}
void main()
{
pid_t childPid;
switch(childPid = fork()) {
case 0: /* child process */
printenv();
exit(0);
default: /* parent process */
//printenv();
exit(0);
}
}
错误:
line 4: extern: command not found
line 5: syntax error near unexpected token '('
line 5: 'void printenv()'
有人知道这是怎么回事吗?我不熟悉 C(主要在 Javascript 和 Python 中工作),但似乎一切都是非常标准的语法,不应该出错。
以下建议代码:
- 干净地编译
- 执行所需的功能
- 不尝试制造僵尸
注意:我在 linux 上编译了这个:
gcc -O1 -ggdb -Wall -Wextra -Wconversion -pedantic -c "untitled2.c" -I.
注意:我将它链接到:
gcc -ggdb -Wall -o "untitled2" "untitled2.o"
然而,fork()
可能会失败,在这种情况下它 returns -1,所以代码应该有一个
case -1:
perror( "fork failed" );
break;
现在,建议的代码:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
extern char **environ;
void printenv()
{
int i = 0;
while (environ[i] != NULL) {
printf("%s\n", environ[i]);
i++;
}
}
int main( void )
{
pid_t childPid;
switch(childPid = fork())
{
case 0: /* child process */
printenv();
exit(0);
default: /* parent process */
//printenv();
waitpid( childPid, NULL, 0);
exit(0);
}
}
我正在关注 this lab Udemy 计算机安全课程,该课程主要使用 C(我认为)脚本进行演示。在我自己的计算机上(在 Ubuntu 和 MacOS 环境中)尝试 运行 以下程序后,我得到了很多错误,似乎编译器甚至不知道它正在读取什么语言.
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
extern char **environ;
void printenv()
{
int i = 0;
while (environ[i] != NULL) {
printf("%s\n", environ[i]);
i++;
}
}
void main()
{
pid_t childPid;
switch(childPid = fork()) {
case 0: /* child process */
printenv();
exit(0);
default: /* parent process */
//printenv();
exit(0);
}
}
错误:
line 4: extern: command not found
line 5: syntax error near unexpected token '('
line 5: 'void printenv()'
有人知道这是怎么回事吗?我不熟悉 C(主要在 Javascript 和 Python 中工作),但似乎一切都是非常标准的语法,不应该出错。
以下建议代码:
- 干净地编译
- 执行所需的功能
- 不尝试制造僵尸
注意:我在 linux 上编译了这个:
gcc -O1 -ggdb -Wall -Wextra -Wconversion -pedantic -c "untitled2.c" -I.
注意:我将它链接到:
gcc -ggdb -Wall -o "untitled2" "untitled2.o"
然而,fork()
可能会失败,在这种情况下它 returns -1,所以代码应该有一个
case -1:
perror( "fork failed" );
break;
现在,建议的代码:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
extern char **environ;
void printenv()
{
int i = 0;
while (environ[i] != NULL) {
printf("%s\n", environ[i]);
i++;
}
}
int main( void )
{
pid_t childPid;
switch(childPid = fork())
{
case 0: /* child process */
printenv();
exit(0);
default: /* parent process */
//printenv();
waitpid( childPid, NULL, 0);
exit(0);
}
}