2016-11-06 7 views
-1

C#コードからCコードを呼び出す方法はありますか?CコードをC#から実行する

私は、Microsoftのドキュメントをたくさん読んでいると私は当面この方法を試してみました:

Process proc = new Process(); 
proc.StartInfo.WorkingDirectory = "path-to-C-code"; 
proc.StartInfo.FileName = "C-code-name"; 
proc.StartInfo.UseShellExecute = false; 
proc.StartInfo.RedirectStandardOutput = true; 
proc.Start(); 
Console.WriteLine(proc.StandardOutput.ReadToEnd()); 
proc.WaitForExit(); 

しかし、明確に機能していません。

この文字列は、私はこれは、その人自身を殺すプロセスのためのコードはCコードでproc.StartInfo.FileName

を何に関係なく、nullのままにしません。

#include <stdlib.h> 
#include <time.h> 
#include <stdio.h> 
#include <signal.h> 
#include <sys/types.h> 
#include <unistd.h> 

int main(int argc, char *argv[], char *env[]) { 

    int value1; 
    int value2; 

    srandom(time(NULL)); 
    switch (random() % 7) { 
    case 0: 
    exit(random() % 10); 
    break; 

    case 1: 
    value1 = value1/(value2 - value2); 
    break; 

    case 2: 
    kill(getpid(), SIGKILL); 
    break; 

    case 3: 
    alarm(random() % 60); 
    break; 

    case 4: 
    __asm__("sti"); 
    break; 

    case 5: 
    value1 = *((int*) NULL); 
    break; 

    default: 
    break; 
    } 

    return 0; 
} 

ありがとうございます。

+1

のおかげで、どのような意味を "明確に動作していない" のでしょうか?エラー?他に何か? –

+0

私はこの部分をどうするかは関係ありません。proc.StartInfo.FileNameは常にヌル文字列なので、コードを実行しません。 –

+0

Cソースコードを実行しようとしていますか?または実際の実行可能ファイル(マシン命令に変換されたので、どの言語で書かれていても問題ありません)?または、いくつかのinteropを実行したいのですか(その場合、PInvokeが面白いかもしれません)。 – UnholySheep

答えて

0
using System; 
using System.Diagnostics; 

namespace runGnomeTerminal 
{ 
    class MainClass 
    { 
     public static void ExecuteCommand(string command) 
     { 
      Process proc = new System.Diagnostics.Process(); 
      proc.StartInfo.FileName = "/bin/bash"; 
      proc.StartInfo.Arguments = "-c \" " + command + " \""; 
      proc.StartInfo.UseShellExecute = false; 
      proc.StartInfo.RedirectStandardOutput = true; 
      proc.Start(); 

      while (!proc.StandardOutput.EndOfStream) { 
       Console.WriteLine (proc.StandardOutput.ReadLine()); 
      } 
     } 

     public static void Main (string[] args) 
     { 
      ExecuteCommand("gnome-terminal -x bash -ic 'cd $HOME; ls; bash'"); 
     } 


    } 
} 

J. Piquard

関連する問題