首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >extern:找不到命令

extern:找不到命令
EN

Stack Overflow用户
提问于 2020-06-18 20:57:14
回答 1查看 614关注 0票数 2

我和这个实验室一起学习了一个关于计算机安全的Udemy课程,该课程主要使用C(我认为)脚本进行演示。在尝试在我自己的计算机上运行以下程序(在Ubuntu和MacOS环境中)之后,我得到了太多的错误,以至于编译器似乎甚至不知道它在读取哪种语言。

代码语言:javascript
复制
#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);
  }
}

错误:

第4行: extern:未找到命令 第5行:意外令牌附近的语法错误 第5行:“()”

有人知道这是怎么回事吗?我不熟悉C(主要使用Javascript和Python),但似乎所有东西都是非常标准的语法,不应该出错。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-19 06:31:58

下列拟议守则:

  1. 干净地编译
  2. 执行所需的功能
  3. 不会试图制造僵尸

注意:我在linux上编译了以下内容:

代码语言:javascript
复制
gcc   -O1  -ggdb -Wall -Wextra -Wconversion -pedantic   -c "untitled2.c"  -I. 

注:我将其链接到:

代码语言:javascript
复制
gcc   -ggdb -Wall -o "untitled2" "untitled2.o"

但是,fork()可能会失败,在这种情况下,它返回-1,所以代码应该有一个

代码语言:javascript
复制
case -1:
    perror( "fork failed" );
    break;

现在,拟议的守则:

代码语言:javascript
复制
#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);
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62459285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档