1

このバグに基づいて、問題をシミュレートするために /var/run/utmp にエントリを書き込もうとしていますhttp://bugs.debian.org/cgi-bin/bugreport.cgi?bug=528060、このコードで試しましたマンページから取得しましたが、機能しませんでした

#include <string.h>
#include <stdlib.h>
#include <pwd.h>
   #include <unistd.h>
   #include <utmp.h>

  int
  main(int argc, char *argv[])
  {
       struct utmp entry;

       system("echo before adding entry:;who");

       entry.ut_type = USER_PROCESS;
       entry.ut_pid = getpid();
       strcpy(entry.ut_line, ttyname(STDIN_FILENO) + strlen("/dev/"));
       /* only correct for ptys named /dev/tty[pqr][0-9a-z] */
       strcpy(entry.ut_id, ttyname(STDIN_FILENO) + strlen("/dev/tty"));
       time(&entry.ut_time);
       strcpy(entry.ut_user, getpwuid(getuid())->pw_name);
       memset(entry.ut_host, 0, UT_HOSTSIZE);
       entry.ut_addr = 0;
       setutent();
       pututline(&entry);

       system("echo after adding entry:;who");
       exit(EXIT_SUCCESS);
       }
4

1 に答える 1

0

このコードで問題を解決しました

#include <string.h>
#include <stdlib.h>
#include <pwd.h>
#include <unistd.h>
#include <utmp.h>

int
main(int argc, char *argv[])
{
       struct utmp entry;

       system("echo before adding entry:;who");

       entry.ut_type = USER_PROCESS;
       entry.ut_pid = getpid();
       strcpy(entry.ut_line, ttyname(STDIN_FILENO) + strlen("/dev/"));
       /* only correct for ptys named /dev/tty[pqr][0-9a-z] */
       strcpy(entry.ut_id, ttyname(STDIN_FILENO) + strlen("/dev/tty"));
       time(&entry.ut_time);
       //strcpy(entry.ut_user, getpwuid(getuid())->pw_name);
       strcpy(entry.ut_user, "pippo");
       memset(entry.ut_host, 0, UT_HOSTSIZE);
       entry.ut_addr = 0;
       setutent();
       pututline(&entry);

       system("echo after adding entry:;who");
       exit(EXIT_SUCCESS);
}
于 2013-09-23T15:37:40.723 に答える