Intro to Unix ECE 2524 Entry #10

Finally getting around to the last blog post on here.  I guess the last assignment I did was implementing the process class. I thought this was a pretty interesting assignment especially since it kind of gave me an idea of how an API such as Qt would implement their QProcess class.  This assignment wasn’t too bad, but figuring out exactly what we needed to do was a little challenging. After getting and understanding of the classes member functions and what they were to do, actually writing the code wasn’t too bad.  Getting all the functionality correct was a little bit challenging like when to close the pipes and what would go into the destructor.

For the write our own assignment, I found this to be more challenging than I initially thought  it would be. After coming up with the idea, it was a lot more difficult to put it into exact words that would describe precisely the assignment that I wanted. Even coming up with an idea that would implement certain commands and ideas was pretty hard.  The grading rubric was probably the hardest of all, as I just wasn’t sure how to give certain points for certain things, a lot of times my mentality is either it works or it doesn’t, and it was hard to come up with point allocations for an in the middle type situation.

For 3574 we got 2 assignments crammed into 2 weeks, thankfully though neither were too difficult.  It was nice to get back into a GUI for homework 8. I got everything up and running pretty quickly but I couldn’t get the GUI to update correctly for the longest time.  Eventually I figured out that i was still using a posix pthread join which blocked the main thread from updating until the other thread was done calculating prime numbers. I found a function, pthread detach, which didn’t block the main thread but also prevented any zombie threads.

Homework 9 was even easier especially being able to use QThread which was nice.  Once I understood how both the semaphores would work and what the mutex would need to lock setting up the consumer/producer threads was easy.  I had a little bit of trouble manipulating the buffer array (it had been a while since I had to work with arrays), but after some careful manipulation of pointers to the buffer I was able to get the circular buffer working properly.

Intro to Unix ECE 2524 Entry #9

I’ve been enjoying the break finishing up all the current unix assignments before the break began. I guess the last thing I did that I haven’t mentioned yet is the future of unix paper.  I thought this was an interesting paper to write about and research as technology in the future has always been an interest of mine. Upon finishing the paper I didn’t realize that part of the submission was creating a makefile to convert the paper to html and pdf. Since I started this paper in Word I wasn’t sure where to go and how to get it in to markdown format. Turns out markdown format is pretty much just plain text, so I was able to take the plain text file and simply add some white space where paragraphs were needed which wasn’t nearly as bad as I thought it would be. After getting the markdown file, converting it using pandoc was as simple as just googling what the command to do so was. Setting up the makefile after this was a piece of cake.

In 3574, we are getting a bunch of homeworks as he is trying to squeeze everything into these last couple of weeks which is really annoying. So we got stuck with an assignment over break. This proved to be pretty tough especially without being able to go see the TA for help.  The homework was on POSIX message queues.  I managed to set up everything necessary for the homework, but was stuck on one of the most trivial parts. The parameter for the message in the send and receive functions is a char*. I didn’t realize how annoying this was to convert my messages between char*s and QStrings.  Turns out everything I was doing wrong had to do with my error in conversion. I was using the same char* as my send and receive message because I didn’t realize how it was really storing the information into the pointer.  By having 2 char*s, one for receiving, and one for sending, this cleared up the issue. Such a small thing for all the debugging I had to do. Debugging for this homework was extremely annoying since you had to run 4 separate processes of the same program, then a fifth process of a different program. All 5 processes had to be run in a certain order, and remade, and reran every time I made a small change. It would take about 30 seconds just to get to the point where I could rerun the program. I finally got it working though after a few emails with the TA,