Write a C program, myls.c, to list files in a given directory. myls takes one optional command line argument specifying the directory path (either absolute or relative path). If the argument is absent, files in current directory will be listed. Typical output should look like:


Case 1: directory argument absent

Case 2: directory argument present


$ myls






$ myls .

  myfile1  myfile2  myfile3  myls



1.        display file names in separate lines, one file each line.

2.        exclude current directory entry (.) and parent directory entry (..)

3.        error handling. Whenever a system call fails, exit program and display an error message by using perror.


l  Bonus: 


Extend myls.c to myll.c to display more detailed information about the files listed:


1.        Modification time (2%). Hint: ctime() function covert time_t to string. consult time.h functions (Chapter 26.3 at Dr. King’s book).

2.        File size (1%).

3.        User name (1%). Hint: getpwuid()takes the uid variable in struct stat and return struct passwd which contains user name variable. Detail/example at:

remember to include required header files to use these functions.

4.        Group name (1%). Hint: getgrgid()takes the gid variable in struct stat and return struct group which contains group name variable. Detail/example at:


For more details about the struct stat definition,


Typical output looks like:

$ myll .

  myfile1          myname           mygroup          32        Apr  3 01:12

  myfile2          myname           mygroup          408      Apr  5 11:01

  myfile3          myname           mygroup          12        Apr  3 23:10

  myll               myname           mygroup          98        Apr  8 01:12


Still stressed with your coursework?
Get quality coursework help from an expert!