免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2214 | 回复: 3
打印 上一主题 下一主题

求教fc10自动登录xwindows [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-19 10:40 |只看该作者 |倒序浏览
我有一台FC10 X64的系统,现在希望找到一种方法能让机器在启动后自动登录到图形桌面下后并运行一些程序和脚本变量。

根据论坛精华帖(redhat7自动登录)的提示已经可以自动登录了,但是用户配置没有加载。


到这一步就报错了
  1. 、/usr/sbin/autologin可执行文件的实现:


  2. /*********************
  3. **** autologin.c ****
  4. *********************/
  5. #include
  6. #include
  7. #include
  8. #include
  9. #include
  10. #include
  11. #include

  12. int main(int argc, char **argv)
  13. {
  14. struct stat st;
  15. FILE *f;
  16. char *cfg;
  17. struct passwd *pw;
  18. uid_t uid;
  19. gid_t gid;
  20. char *dir, *shell;
  21. char *user=NULL;
  22. char *cmd=NULL;

  23. user="root";
  24. /*为了能说明问题又保持程序简洁,这里默认登录用户为root,实际上,
  25. 登陆用户名应该从/etc/sysconfig/autologin中得到,
  26. 程序实现时要注意过滤掉/etc/sysconfig/autologin中的无效用户名*/
  27. cmd="/usr/X11R6/bin/startx";
  28. /*同样,这里直接指定启动X window的程序,实际上,该程序应该从/etc/sysconfig/autologin中得到*/

  29. pw = getpwnam(user);
  30. //getpwnam返回包含用户信息的passwd结构(该结构在pwd.h中定义)。
  31. if(pw) {
  32. uid=pw->pw_uid;
  33. gid=pw->pw_gid; dir=strdup(pw->pw_dir);
  34. shell=strdup(pw->pw_shell);
  35. }
  36. //获得用户相关信息
  37. else {
  38. printf("ERROR: No such user %s!\n", user);
  39. return 1;
  40. }

  41. chown("/dev/console", uid, gid);
  42. chown("/dev/tty", uid, gid);
  43. //为控制台和终端设置用户ID及组ID

  44. //下面是设置用户相关ID
  45. setregid(gid, gid);
  46. setegid(gid);
  47. setgid(gid);
  48. setreuid(uid, uid);
  49. seteuid(uid);
  50. setuid(uid);

  51. setenv("HOME", dir, 1);
  52. setenv("SHELL", shell, 1);
  53. setenv("USER", user, 1);
  54. setenv("LOGNAME", user, 1);
  55. //设置用户相关环境变量

  56. chdir(dir);
  57. //切换到用户根目录
  58. user=NULL;

  59. execvp(cmd, argv);
  60. /*在配置完用户的相关信息后,执行启动X window操作。注意这里默认执行/usr/X11R6/bin/startx */
  61. printf("ERROR: Couldn't exec %s: %s\n", cmd, strerror(errno));
  62. return 2;
  63. }


  64. 运行gcc -o autologin autologin.c,拷贝autologin可执行文件到/usr/sbin/autologin,拷贝autologin配置文件到/etc/sysconfig/autologin。 重新启动系统,会直接进入X window并保留用户原来所有的风格。
复制代码
当我gcc的时候出现
  1. [root@vpc sysconfig]# gcc -o autologin autologin.c
  2. autologin.c:4:10: #include expects "FILENAME" or <FILENAME>
  3. autologin.c:5:10: #include expects "FILENAME" or <FILENAME>
  4. autologin.c:6:10: #include expects "FILENAME" or <FILENAME>
  5. autologin.c:7:10: #include expects "FILENAME" or <FILENAME>
  6. autologin.c:8:10: #include expects "FILENAME" or <FILENAME>
  7. autologin.c:9:10: #include expects "FILENAME" or <FILENAME>
  8. autologin.c:10:10: #include expects "FILENAME" or <FILENAME>
  9. autologin.c: In function `main':
  10. autologin.c:14: error: storage size of 'st' isn't known
  11. autologin.c:15: error: `FILE' undeclared (first use in this function)
  12. autologin.c:15: error: (Each undeclared identifier is reported only once
  13. autologin.c:15: error: for each function it appears in.)
  14. autologin.c:15: error: `f' undeclared (first use in this function)
  15. autologin.c:18: error: `uid_t' undeclared (first use in this function)
  16. autologin.c:18: error: syntax error before "uid"
  17. autologin.c:19: error: `gid_t' undeclared (first use in this function)
  18. autologin.c:21: error: `NULL' undeclared (first use in this function)
  19. autologin.c:26: warning: assignment makes pointer from integer without a cast
  20. autologin.c:28: error: `uid' undeclared (first use in this function)
  21. autologin.c:28: error: dereferencing pointer to incomplete type
  22. autologin.c:29: error: `gid' undeclared (first use in this function)
  23. autologin.c:29: error: dereferencing pointer to incomplete type
  24. autologin.c:29: error: dereferencing pointer to incomplete type
  25. autologin.c:30: error: dereferencing pointer to incomplete type
  26. autologin.c:51: error: `errno' undeclared (first use in this function)
  27. [root@vpc sysconfig]#
复制代码
求教该如何解决?
如果不能加载用户配置也没关系,只要启动后能加载我需要的配置也可以.
(例如我之前将启动的命令添加到了 /etc/rc.local或者/etc/profile中,但是他没有生效)

论坛徽章:
0
2 [报告]
发表于 2010-04-19 10:50 |只看该作者
这么长..

用root执行gdmsetup,里面可以设置自动登录。
gnome和kde都可以设置登录后自动启动程序或者执行脚本,

你看的那个帖子过时了。

论坛徽章:
0
3 [报告]
发表于 2010-04-19 10:54 |只看该作者
搞这么复杂,设置一下不就成了?
如果不想启动桌面,运行X后,直接运行你的指定的应用程序,将/usr/bin/gnome-session修改为一个shell脚本程序就可以。

论坛徽章:
0
4 [报告]
发表于 2010-04-19 12:24 |只看该作者
看看!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP