C代码中的Bash命令

bar*_*glu 1 c bash

我试图使用C程序运行一些bash命令,

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int j;
    char a[4]={'a','9','8','4'};
    for (j=0;j<=3;j++)
    {
        printf("a[%d]=%c      %p\n",j,a[j],&a[j]);
    }
    system("a=(a 9 8 4)");
    system("echo ${a[*]}");
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,下面的行没有显示任何内容

system("a=(a 9 8 4)");
system("echo ${a[*]}"); 
Run Code Online (Sandbox Code Playgroud)

任何的想法?

hek*_*mgl 6

两件事情:

  • 每次调用system()新shell都会被调用.这意味着变量声明只对当前调用的shell可见,而不是后续调用system()

  • 除此之外,system()内部呼叫/bin/sh,而不是/bin/bash./bin/sh是在许多系统(如你的)上链接到POSIX兼容的shell.遗憾的是,数组定义不是POSIX shell语言的一部分.