在C程序中使用shell脚本中创建的变量

在C程序中使用shell脚本中创建的变量,c,bash,shell,sh,getenv,C,Bash,Shell,Sh,Getenv,我必须找到可以创建的最大进程数。我有这样的想法: findmax.sh: #!/bash/bin L1=`ulimit -u` L2=`ps -ux | wc -l` MAX=$(($L1-$L2-1)) #MAX is an int number 问题是如何在.c文件中使用MAX变量?我得到一个使用getenv()函数的建议,但我不知道如何使它工作 有更好的方法吗?将其作为命令行参数传递给您的程序。请注意,要遵循POSIX对环境变量名称的建议,为您的应用程序自己使用而创建的名称应避免使用a

我必须找到可以创建的最大进程数。我有这样的想法:

findmax.sh:

#!/bash/bin

L1=`ulimit -u`
L2=`ps -ux | wc -l`
MAX=$(($L1-$L2-1)) #MAX is an int number
问题是如何在
.c
文件中使用
MAX
变量?我得到一个使用
getenv()
函数的建议,但我不知道如何使它工作


有更好的方法吗?

将其作为命令行参数传递给您的程序。请注意,要遵循POSIX对环境变量名称的建议,为您的应用程序自己使用而创建的名称应避免使用all caps名称空间(该名称空间用于修改shell本身行为和POSIX定义的实用程序的名称)。请注意,在从该脚本调用的程序中使用
getenv()
之前,您需要使用
export
将shell变量存储在环境空间中,而不是存储在shell堆中。(请注意,环境是一种有限的资源——导出变量使用的空间越大,最大命令行长度越短,因此在没有理由的情况下不应使用它)。此外,如果您真的想达到最大值,不要在程序启动前测量剩余的进程,并希望此后它不会在任何方向上改变(这是一个不太可能的希望),只要优雅地处理在达到极限时遇到的失败,然后你就不需要传递任何东西了。@CharlesDuffy我将尝试使用extern。感谢您的帮助,将其作为命令行参数传递给您的程序。请注意,要遵循POSIX对环境变量名称的建议,为您的应用程序自己使用而创建的名称应避免使用all caps命名空间(用于修改shell本身行为和POSIX定义的实用程序的名称)。请注意,在从该脚本调用的程序中使用
getenv()
之前,您需要使用
export
将shell变量存储在环境空间中,而不是存储在shell堆中。(请注意,环境是一种有限的资源——导出变量使用的空间越大,最大命令行长度越短,因此在没有理由的情况下不应使用它)。此外,如果您真的想达到最大值,不要在程序启动前测量剩余的进程,并希望此后它不会在任何方向上改变(这是一个不太可能的希望),只要优雅地处理在达到极限时遇到的失败,然后你就不需要传递任何东西了。@CharlesDuffy我将尝试使用extern。谢谢你的帮助