访问被拒绝Process.Start

时间:2018-06-06 17:19:43

标签: c# .net mono system.diagnostics

我收到错误消息"权限被拒绝"当我运行此代码时。这个错误是由我的Mac上的权限引起的还是因为代码?我使用了与MSDN相同的示例。

static void Main(string[] args)
{
    Process.Start("readme.txt");
};

1 个答案:

答案 0 :(得分:2)

Process.Start("open", "readme.txt") 接受可执行文件或文档的名称。根据{{​​3}}:

  

文件名不需要表示可执行文件。它可以是扩展名与系统上安装的应用程序关联的任何文件类型。例如,如果您将文本文件与编辑器(如记事本)关联,则文件名可以具有.txt扩展名;如果您具有带有文字处理工具的关联.doc文件(如Microsoft Word),则文件名可以具有.doc。

此描述可能仅限于Windows平台。我猜想macOS上的实现仅限于运行docs个文件。

如果您想使用MacOS的默认编辑器,那么您应该可以按如下方式运行它:

open

请记住,%{ #include<stdio.h> #include<stdlib.h> int regs[30]; %} %token NUMBER LETTER %left PLUS MINUS %left MULT DIV %% prog: prog st | ; //when I remove this line the error goes st : E {printf("ans %d", $1);}| LETTER '=' E {regs[$1] = $3; printf("variable contains %d",regs[$1]);}; E : E PLUS E{$$ = $1 + $3;} //addition | E MINUS E{$$ = $1 - $3 ;} //subtraction | MINUS E{$$ = -$2;} | E MULT E{$$ = $1 * $3 ;} | E DIV E { if($3)$$= $1 / $3; else yyerror("Divide by 0");} /*|LBRACE E RBRACE{$$= $2;} | RBRACE E LBRACE{yyerror("Wrong expression");} */ | NUMBER {$$ = $1;} | LETTER {$$ = regs[$1];} ; %% int main(void) { printf("Enter Expression: "); yyparse(); return 0; } int yyerror(char *msg) { printf("%s", msg);// printing error exit(0); } 是一个特定于MacOS的实用程序,因此无法在其他操作系统上运行。