我开发了一个接受来自标准输入的文本的迷你外壳。到目前为止它有效,但我需要让它返回(在>之前的小东西中)
他们登录的机器名称和当前工作目录。
我有
#include <unistd.h>
在代码中,当前工作目录是使用 getcwd(2) 获得的,它工作正常,但 gethostname(2) 似乎不起作用。它不会在 MINGW32 上使用 gcc 进行编译,给出错误:未定义的对 'gethostname' collect2 的引用:ld reurned 1 exit status。
到目前为止,这是我的代码。
#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;
}
欢迎任何批评和评论:)