stdinからのテキストを受け入れるミニシェルを開発しました。これまでは機能しますが、元に戻す必要があります(>の前の小さなことで)
ログインしているマシン名AND現在の作業ディレクトリ。
私は持っています
#include <unistd.h>
コード内で、現在の作業ディレクトリはgetcwd(2)を使用して取得されました。これは正常に機能しましたが、gethostname(2)は機能していないようです。MINGW32でgccを使用してコンパイルされないため、エラーが発生します。「gethostname」への未定義の参照w collect2:ld reurned 1exitstatus。
これが私のコードです。
#include <stdio.h>
#include <string.h>
#include <unistd.h>
static int LINE_MAX = 10000;
static char *cmdLine = "Samcmd --> ";
int main( int argc, char *argv[] )
{
char cwd[LINE_MAX];
char hostName[LINE_MAX];
int looper = 1;
char *token = NULL;
char line[LINE_MAX];
char *placehold = NULL;
getcwd(cwd, LINE_MAX - 1);
gethostname(hostName, LINE_MAX - 1);
while ( looper == 1 )
{
printf( "%s | %s", hostName, cmdLine );
if( fgets( line, LINE_MAX, stdin ) != NULL )
{
token = strtok( line, ";" );
do{
if( strcmp(token, "exit\n") == 0 ) /*if an exit command is issued*/
{
looper = 0;
}
system(token);
token = strtok( NULL, ";" );
} while ( token != NULL );
}
}
return 0;
}
批評やコメントは大歓迎です:)