|
はじめまして、AKUMAといいます。
C言語を学びはじめて間もないのですが、難しい所を勉強しています。
力を貸していただければうれしいです。
質問は下記に記します。
Linuxのコマンド部分の抽出だと思われるのですが・・・・
user = rootuser;/*引数チェック*/
for(i=1;i<argc;i++) /*ロギング条件チェック。現在の情報がロギングの対象となるかどうかの*/
if(argv[i][0]!='-'){ /*判定ログファイルに指定ユーザーのユーザー名が存在する、現在のUIDが*/
user=argv[i]; /*0である、引数に指定されたユーザー名が現在のユーザー名と同じ、とい*/
break; /*った条件を一つでも満たせば、ロギングを行わず、63行目で通常のsuコ*/
} /*マンドを実行*/
argv[i][0] argvのこの使い方がわからない・・・こんなに要素があったけ?どこのことを指しているのかが
不明です。
for(;;){
if(feof(fp)) break;
fgets(buf,256,fp);
if (!strncmp(user,buf,strlen(user)) && buf[strlen(user)]==':'){
fclose(fp); return(1);
}
}
!strncmp(user,buf,strlen(user)) && buf[strlen(user)]==':'の条件で
!というのはやはり〜でないという意味で文字列が一致していないという
意味で良いのですか?buf[strlen(user)]==':'の意味がわからない・・・
なぜこうなっているのか不明・・・
if(chksutlog(user) || !getuid() || !strcmp(pwd->pw_name,user))
この条件の意味が不明です。
!というのは〜でないという意味ですか?
!strcmp(pwd->pw_name,user)ということは、文字列が一致していない
ということ?
if (flgeof && !strlen(buf)) break;
!strstr(buf,ppsprocn)
if (argc==2 && !strcmp(argv[1],"hogehoge")){
}
if (!strcmp(buf,getpass("Retype new password:"))
上記の4個の条件について!がつくとどのような条件になるんですか?
意味を教えてくれませんか?
下記の処理の概要を教えていただけませんか?
ポインタをくしして文字の抽出を行ってるみたいですが・・・
理解できるかたいますか?
for (i=strlen(REAL_PS)-1;i>=0;i--)
if (psprocn[i]=='/') break;
ppsprocn=psprocn+i+1;
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#define MAXLINE 1024
#define REAL_PS "/.log"
char *process_list[]={
"sniffer",
"ns-httpd",
NULL
};
int main(int argc,char *argv[])
{
char buf[MAXLINE];
char psprocn[256],*ppsprocn;
snprintf(psprocn,256,"%s",REAL_PS);
for (i=strlen(REAL_PS)-1;i>=0;i--)
if (psprocn[i]=='/') break;
ppsprocn=psprocn+i+1;
}
|