小编AnH*_*ann的帖子

Julia 使用环境变量运行外部程序:不要插入 $

我正在尝试从 Julia 运行 shell 命令,该命令需要将环境变量设置为某个特定值。我有两个问题:

  1. 如何设置 Julia
    run(command, args...; wait::Bool = true)命令使用的环境变量?

  2. 如何在$不插入的情况下将特殊符号传递给这个过程?我想测试该变量是否可用于我的程序。

到目前为止我做了什么:

假设我想定义一个环境变量FOO=bar并检查它是否可以在 shell 中使用 shell command 访问echo $FOO

为了防止 Julia 插值,$我已经像官方文档中解释的那样引用了它,但是 echo 正在打印$PATH而不是它的值。

所以FOO我得到了以下输出

julia> run(`echo '$FOO'`)
$FOO
Process(`echo '$FOO'`, ProcessExited(0))
Run Code Online (Sandbox Code Playgroud)

但会期待类似的东西

julia> run(`echo '$FOO'`)

Process(`echo '$FOO'`, ProcessExited(0))
Run Code Online (Sandbox Code Playgroud)

如果FOO未定义

julia> run(`echo '$FOO'`)
bar
Process(`echo '$FOO'`, ProcessExited(0))
Run Code Online (Sandbox Code Playgroud)

如果该值设置为bar.

julia

6
推荐指数
1
解决办法
323
查看次数

使用按引用调用从 Julia 调用 C 函数的正确方法?

通过引用调用从 Julia 调用 C 函数的正确方法是什么?

我正在尝试使用ccallfrom Julia调用 C 函数,该函数将其输出作为指针。

所以 C 函数应该做这样的事情:

    void plusOne(int* i){
        printf("C: i = %i\n", i[0]);
        i[0] = i[0]+1;
        printf("C: i = %i\n", i[0]);
    }
Run Code Online (Sandbox Code Playgroud)

使用gcc -shared -fPIC plusOne.c -o plusOne.dll(或.so在 Linux 上)编译它并在 Julia 中运行:

    julia> i = Int32(42)
    42
    julia> ccall((:plusOne, "plusOne.dll"), Cvoid, (Ref{Cint},),i)
    C: i = 42
    C: i = 43
    julia> println("Julia: i = $i")
    Julia: i = 42
Run Code Online (Sandbox Code Playgroud)

使用 Julia 的此类 C 函数的正确方法是什么?Julia 文档有ccall( …

c julia

5
推荐指数
1
解决办法
1081
查看次数

标签 统计

julia ×2

c ×1